package com.john.bms.model.wow;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
 * @Author:张家小帅哥
 * @Date:2020/12/1
 * @Version:1.0
 * @Description:TODO
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ItemTemplate implements Serializable {

    /**
     * id
     */
    private Integer entry;

    /**
     * 物品类型0=消耗品1=容器2=武器3=珠宝4=盔甲5=试剂6=弹药7=商业物品(材料)8=普通（废弃）9=食谱配方10=金钱 （废弃）11=箭弹药袋12=任务物品13=钥匙14=永久(做废)15=其它16=雕文
     */
    private Byte classder;

    /**
     * 物品子类型
     */
    private Byte subclass;

    /**
     * 武器碰撞时的声音
     */
    private Byte soundoverridesubclass;

    /**
     * 物品名称
     */
    private String name;

    /**
     * 物品模型ID
     */
    private Integer displayid;

    /**
     * 品质0= 灰色（粗糙）1= 白色（普通）2= 绿色（优秀）3= 蓝色（精良）4= 紫色（史诗）5= 橙色（传说）6= 红色7= 暗金（账号绑定，一般为传家宝）
     */
    private Byte quality;

    /**
     * 标记，可叠加
     */
    private Integer flags;

    /**
     * 额外标识
     */
    private Integer flagsextra;

    /**
     * 商人出售列表中的物品堆叠数量，每次刷新后复原
     */
    private Byte buycount;

    /**
     * 购买价格
     */
    private Long buyprice;

    /**
     * 出售价格
     */
    private Integer sellprice;

    /**
     * 配带位置
     */
    private Byte inventorytype;

    /**
     * 需要职业
     */
    private Integer allowableclass;

    /**
     * 需要职业
     */
    private Integer allowablerace;

    /**
     * 物品等级
     */
    private Short itemlevel;

    /**
     * 需要使用的最小等级
     */
    private Byte requiredlevel;

    /**
     * 必须技能
     */
    private Short requiredskill;

    /**
     * 必须技能等级
     */
    private Short requiredskillrank;

    /**
     * 必需魔法
     */
    private Integer requiredspell;

    /**
     * 使用这物品的荣誉等级
     */
    private Integer requiredhonorrank;

    /**
     * 需要城市等级
     */
    private Integer requiredcityrank;

    /**
     * 需要声望（阵营）
     */
    private Short requiredreputationfaction;

    /**
     * 需要声望等级
     */
    private Short requiredreputationrank;

    /**
     * 持有的最大数量
     */
    private Integer maxcount;

    /**
     * 可叠加数量
     */
    private Integer stackable;

    /**
     * 背包有多少格
     */
    private Byte containerslots;

    /**
     * 绿字属性数量
     */
    private Byte statscount;

    /**
     * 属性1
     */
    private Byte statType1;

    /**
     * 属性值1
     */
    private Short statValue1;

    private Byte statType2;

    private Short statValue2;

    private Byte statType3;

    private Short statValue3;

    private Byte statType4;

    private Short statValue4;

    private Byte statType5;

    private Short statValue5;

    private Byte statType6;

    private Short statValue6;

    private Byte statType7;

    private Short statValue7;

    private Byte statType8;

    private Short statValue8;

    private Byte statType9;

    private Short statValue9;

    private Byte statType10;

    private Short statValue10;

    /**
     * 缩放状态属性，一般用于传家宝
     */
    private Short scalingstatdistribution;

    /**
     * 缩放状态值，一般用于传家宝
     */
    private Integer scalingstatvalue;

    /**
     * 最小伤害
     */
    private Float dmgMin1;

    /**
     * 最大伤害
     */
    private Float dmgMax1;

    /**
     * 伤害类型
     */
    private Byte dmgType1;

    private Float dmgMin2;

    private Float dmgMax2;

    private Byte dmgType2;

    /**
     * 护甲值
     */
    private Short armor;

    /**
     * 神圣抗性
     */
    private Byte holyRes;

    /**
     * 火系抗性
     */
    private Byte fireRes;

    /**
     * 自然抗性
     */
    private Byte natureRes;

    /**
     * 冰霜抗性
     */
    private Byte frostRes;

    /**
     * 暗影抗性
     */
    private Byte shadowRes;

    /**
     * 奥术抗性
     */
    private Byte arcaneRes;

    /**
     * 武器攻击速度(毫秒)
     */
    private Short delay;

    /**
     * 弹药类型， 2- 弓箭，3- 子弹
     */
    private Byte ammoType;

    /**
     * 远程攻击距离
     */
    private Float rangedmodrange;

    /**
     * 法术编号
     */
    private Integer spellid1;

    /**
     * 法术触发类型，0-使用，1-装备，2-击中时可能，4-灵魂石，5-马上使用，无延迟，6-学习法术编号
     */
    private Byte spelltrigger1;

    /**
     * 使用次数，如果为0，表示无限使用；如果是负数，表示使用次数为0时就删除该物品；如果是正数，使用次数为0时不删除物品；
     */
    private Short spellcharges1;

    /**
     * 触发概率，每分钟触发多少次，spelltrigger_1必须为2
     */
    private Float spellppmrate1;

    /**
     * 技能冷却时间
     */
    private Integer spellcooldown1;

    /**
     * 技能族
     */
    private Short spellcategory1;

    /**
     * 技能族冷却时间
     */
    private Integer spellcategorycooldown1;

    private Integer spellid2;

    private Byte spelltrigger2;

    private Short spellcharges2;

    private Float spellppmrate2;

    private Integer spellcooldown2;

    private Short spellcategory2;

    private Integer spellcategorycooldown2;

    private Integer spellid3;

    private Byte spelltrigger3;

    private Short spellcharges3;

    private Float spellppmrate3;

    private Integer spellcooldown3;

    private Short spellcategory3;

    private Integer spellcategorycooldown3;

    private Integer spellid4;

    private Byte spelltrigger4;

    private Short spellcharges4;

    private Float spellppmrate4;

    private Integer spellcooldown4;

    private Short spellcategory4;

    private Integer spellcategorycooldown4;

    private Integer spellid5;

    private Byte spelltrigger5;

    private Short spellcharges5;

    private Float spellppmrate5;

    private Integer spellcooldown5;

    private Short spellcategory5;

    private Integer spellcategorycooldown5;

    /**
     * 绑定
     */
    private Byte bonding;

    /**
     * 品的橙色文字说明，显示在物品面板下方
     */
    private String description;

    /**
     * 文字编号，参考page_text表的entry字段
     */
    private Integer pagetext;

    /**
     * 语言编号，参考Languages.dbc文件；
     */
    private Byte languageid;

    /**
     * 页面素材
     */
    private Byte pagematerial;

    /**
     * 接取的任务编号
     */
    private Integer startquest;

    /**
     * 锁编号，参考Lock.dbc
     */
    private Integer lockid;

    /**
     * 物品材料， -1-消耗品（食物、试剂等），0-未定义，1-金属，2-木制品，3-液体，4-珠宝，5-锁甲，6-板甲，7-布甲，8-皮甲
     */
    private Byte material;

    /**
     * 武器放置的位置
     */
    private Byte sheath;

    /**
     * 随机属性，参考 item_enchantmeng_template 表的entry字段
     */
    private Integer randomproperty;

    /**
     * 随机后缀，参考 item_enchantmeng_template 表的entry字段
     */
    private Integer randomsuffix;

    /**
     * 格挡率
     */
    private Integer block;

    /**
     * 套装编号，参考 itemset.dbc
     */
    private Integer itemset;

    /**
     * 最大持久度
     */
    private Short maxdurability;

    /**
     * 区域
     */
    private Integer area;

    /**
     * 地图
     */
    private Short map;

    /**
     * 如果物品是个包裹，这里定义包裹类型
     */
    private Integer bagfamily;

    /**
     * 参考TotemCategory.dbc
     */
    private Integer totemcategory;

    /**
     * 宝石插槽颜色1， 1-原石，2-红色，4-黄色，8-蓝色
     */
    private Byte socketcolor1;

    /**
     * 数量
     */
    private Integer socketcontent1;

    /**
     * 宝石插槽颜色2， 1-原石，2-红色，4-黄色，8-蓝色
     */
    private Byte socketcolor2;

    /**
     * 数量
     */
    private Integer socketcontent2;

    /**
     * 宝石插槽颜色3， 1-原石，2-红色，4-黄色，8-蓝色
     */
    private Byte socketcolor3;

    /**
     * 数量
     */
    private Integer socketcontent3;

    /**
     * 插槽奖励，可从SpellItemEnchantment.dbc文件里选取
     */
    private Integer socketbonus;

    /**
     * 参考GemProperties.dbc
     */
    private Integer gemproperties;

    /**
     * 需要魅惑技能
     */
    private Short requireddisenchantskill;

    /**
     * 护甲伤害调整
     */
    private Float armordamagemodifier;

    /**
     * 物品持续时间
     */
    private Integer duration;

    /**
     * 物品限制分类
     */
    private Short itemlimitcategory;

    /**
     * 节日编号，参考Holidays.dbc
     */
    private Integer holidayid;

    /**
     * 使用的脚本名称
     */
    private String scriptname;

    /**
     * 魅惑掉落，参考 Disenchant_loot_template表的entry字段
     */
    private Integer disenchantid;

    /**
     * -肉，2-鱼，3-芝士，4-面包，5-菌类，6-水果，7-生肉，8-生鱼
     */
    private Byte foodtype;

    /**
     * 最小金钱掉落
     */
    private Integer minmoneyloot;

    /**
     * 最大金钱掉落
     */
    private Integer maxmoneyloot;

    /**
     * 1-玩家下线也计时， 2-掉落时不检测任务状态， 4-点贪婪前遵守掉落规则
     */
    private Integer flagscustom;

    /**
     * 验证机制
     */
    private Short verifiedbuild;

    private static final long serialVersionUID = 1L;

}
